﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace LI4
{
    public partial class regEmpresa : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (nome.Text == "")
            {
                Data.Localidade localidade = new Data.Localidade();
                Data.Distrito distrito = new Data.Distrito();
                Data.Area area = new Data.Area();

                Program.areas = area.getAreas();
                Program.distritos = distrito.getDistritos();
                Data.Localidade localp = new Data.Localidade();

                listarea.Items.Clear();


                foreach (Business.Area areap in Program.areas)
                    listarea.Items.Add(areap.Nome);

                foreach (Business.Distrito dist in Program.distritos)
                    lstdistrito.Items.Add(dist.Nome);

                foreach (Business.Distrito dist in Program.distritos)
                    lstlocalidade.Items.Add(new Business.Localidade(localp.getLocalidadeDistrito(dist.CodDistrito)).Nome);
            }

        }

        protected void lstdistrito_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstlocalidade.Items.Clear();
            Data.Localidade local = new Data.Localidade();
            ArrayList localidades = new ArrayList();
            Data.Distrito distrito = new Data.Distrito();
            Business.Distrito dist = new Business.Distrito(distrito.getDistritoNome(lstdistrito.SelectedItem.Text));

            localidades = local.getLocalidadesDistrito(dist.CodDistrito);

            foreach (Business.Localidade localidade in localidades)
                lstlocalidade.Items.Add(localidade.Nome);
        }

        protected void lstlocalidade_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            

            string nomet = nome.Text;
            string emailt = email.Text;
            string distritot = lstdistrito.Text;
            string localidadet = lstlocalidade.Text;
            string ruat = morada.Text;
            string codpostalt1 = codpostal.Text;
            string codpostalt2 = codpostal1.Text;
            string cod_postalt = codpostalt1 + codpostalt2;
            string usernamet = username.Text;
            string passt = password.Text;
            string passConft = password1.Text;
            int telefonet = 0;
            int telefonep = 1;
            int situacaot = 20;
            int postot = Business.Login.EMPRESA;
            string descricaot = descricao.Text;
            int cod = 1;

           
            Data.Localidade loc1 = new Data.Localidade();
            Business.Localidade local = new Business.Localidade(loc1.getLocalidadeNome(lstlocalidade.SelectedItem.Text));

            Data.Area areap = new Data.Area();
            Business.Area area = new Business.Area(areap.getAreaNome(listarea.SelectedItem.Text));





            try
            {
                telefonet = Int32.Parse(telefone.Text);
            }
            catch
            {
                telefonep = 0;
            }

            try
            {
                int codP = Int32.Parse(cod_postalt);
            }
            catch
            {
                cod = 0;
            }
            Regex nomereg = new Regex(@"[a-zA-Z0-9àáéóúãâÂÁÀÉêÊÍÓçÇÃÓõÕôÚ.,:-_]+([ a-zA-Z0-9àáéêÊóúãâÂÁÀÉÍÓçÇÃÓÚõÕô.,:-_]+)*");
            Regex mailReg = new Regex(@"[a-zA-Z0-9]+@[a-zA-Z]+\.[a-zA-Z]+");
            if (!nomereg.IsMatch(nomet)) Response.Write("<script>alert('Campo Nome inválido')</script>");
            else if (!mailReg.IsMatch(emailt)) Response.Write("<script>alert('Campo email inválido')</script>");
            else if (distritot.Length < 1) Response.Write("<script>alert('Campo Distrito inválido')</script>");
            else if (passConft != passt) Response.Write("<script>alert('Passwords não são iguais')</script>");
            else if (localidadet.Length < 1) Response.Write("<script>alert('Campo Localidade inválido')</script>");
            else if (!nomereg.IsMatch(ruat)) Response.Write("<script>alert('Campo Rua inválido')</script>");
            else if (cod == 0) Response.Write("<script>alert('Campo Código-Postal inválido')</script>");
            else if (!nomereg.IsMatch(usernamet)) Response.Write("<script>alert('Campo username inválido')</script>");
            else if (!nomereg.IsMatch(passt)) Response.Write("<script>alert('Campo password inválido')</script>");
            else if (!nomereg.IsMatch(passConft)) Response.Write("<script>alert('Campo confirmar password inválido')</script>");
            else if (telefonep == 0) Response.Write("<script>alert('Campo Telefone inválido')</script>");
            else if (!nomereg.IsMatch(descricaot)) Response.Write("<script>alert('Campo Descrição inválido')</script>");
            else
            {
                if (!passt.Equals(passConft))
                {
                    Response.Write("<script>alert('Volte a inserir a password')</script>");
                    password.Text = "";
                    password1.Text = "";
                }
                else //finalmente tenta inserir na base de dados
                {
                    Business.Login login = new Business.Login(usernamet, passt, postot, 0);
                    Business.Empresa empresa = new Business.Empresa(nomet, emailt, telefonet, ruat, cod_postalt, local, descricaot, area, situacaot, login);

                    int success = Business.GerirEmpresas.inserirEmpresaBD(empresa);
                    if (success == Business.Login.BADLOGIN)
                        Response.Write("<script>alert('Username já existente')</script>");
                    else
                    {
                        Response.Write("<script>alert('Empresa Inserida no sistema')</script>");
                      
                    }
                }
            }
        }

        protected void listarea_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
